﻿using System.Collections.Generic;
using DatabaseManager.Core.Models;

namespace DatabaseManager.Core.Interfaces
{
    /// <summary>
    /// 定义访问目标数据库（MySQL/MSSQL/Oracle/PG）的通用接口。
    /// 主要用于读取元数据信息，不包含持久化逻辑。
    /// </summary>
    public interface IDatabaseProvider
    {
        /// <summary>
        /// 获取当前数据库的版本信息。
        /// </summary>
        string GetDatabaseVersion();

        /// <summary>
        /// 获取当前数据库实例下的所有数据库名称（或Schema）。
        /// </summary>
        List<string> GetDatabases();

        /// <summary>
        /// 获取当前数据库下的所有表。
        /// </summary>
        List<TableInfo> GetTables();

        /// <summary>
        /// 获取指定表的字段信息。
        /// </summary>
        List<ColumnInfo> GetColumns(string tableName);

        /// <summary>
        /// 获取指定表的索引信息。
        /// </summary>
        List<IndexInfo> GetIndexes(string tableName);

        /// <summary>
        /// 获取指定表的约束信息。
        /// </summary>
        List<ConstraintInfo> GetConstraints(string tableName);
    }
}